local tbl = setmetatable({},{
    __index =
    function(t, k)
        print("hello world")
    end
})
print(tbl.hello)
--[[
    hello world
    nil

    1.判断tbl中，是否存在被访问的key：hello，并且value不为nil。如果存在，则返回tbl.hello，否则进入下一步
    2.判断tbl是否设置了metatable，如果没有设置，则tbl.hello这个操作，返回的结果是nil。否则进入下一步
    3.判断tbl的metatable是否存在__ index域，如果不存在，tbl.hello这个操作，返回的结果是nil。否则进入下一步
    4.调用__ index所指向的函数，并执行，如果函数有返回值，或者在函数内有对tbl.hello赋值，那么tbl.hello的结果为这个返回值，或者是被赋予的值
    5.调用结束
]]